home *** CD-ROM | disk | FTP | other *** search
/ Info-Mac 4 / Info_Mac IV CD-ROM (Pacific HiTech Inc.)(August 1994).iso / Development / General / DR1.#1 PowerPlant ƒ / LPane.h < prev    next >
Text File  |  1994-02-10  |  6KB  |  259 lines

  1. // ===========================================================================
  2. //    LPane.h                            ©1993 Metrowerks Inc. All rights reserved.
  3. // ===========================================================================
  4.  
  5. #pragma once
  6.  
  7. class    LView;
  8. class    LStream;
  9.  
  10. typedef Int16    PaneIDT;
  11.  
  12. struct    SDimension16    {
  13.     Int16    width;
  14.     Int16    height;
  15. };
  16.  
  17. struct    SDimension32    {
  18.     Int32    width;
  19.     Int32    height;
  20. };
  21.  
  22. typedef Point    SPoint16;
  23.  
  24. struct    SPoint32    {
  25.     Int32    h;
  26.     Int32    v;
  27. };    
  28.  
  29. struct    SBooleanRect    {
  30.     Boolean    left;
  31.     Boolean    top;
  32.     Boolean    right;
  33.     Boolean    bottom;
  34. };
  35.  
  36. struct    SMouseDownEvent    {
  37.     Point        wherePort;
  38.     Point        whereLocal;
  39.     EventRecord    macEvent;
  40.     Boolean        delaySelect;
  41. };
  42.  
  43. struct PanelSpec {
  44.     Uint32    horizIndex;
  45.     Uint32    vertIndex;
  46.     Uint32    pageNumber;
  47. };
  48.  
  49. struct PanePlace {
  50.     SDimension16    frameSize;
  51.     SPoint32        frameLocation;
  52. };
  53.  
  54. enum {
  55.     paneAttr_EraseFirst            = 0x80000000,
  56.     paneAttr_FrameInside        = 0x40000000,
  57.     paneAttr_FrameOutside        = 0x20000000,
  58.     paneAttr_DrawFocusBox        = 0x10000000
  59. };
  60.  
  61. struct SPaneInfo {
  62.     Int16            paneID;
  63.     Int16            width;
  64.     Int16            height;
  65.     Boolean            visible;
  66.     Boolean            enabled;
  67.     SBooleanRect    bindings;
  68.     Int32            leftInSuperImage;
  69.     Int32            topInSuperImage;
  70.     Int32            refCon;
  71. };
  72.  
  73.  
  74. const Int16        min_QDCoord    = -32768;
  75. const Int16        max_QDCoord = 32767;
  76.  
  77.  
  78. class LPane {
  79.     friend class LView;
  80. public:
  81.                     LPane();
  82.                     LPane(const LPane &inOriginal);        
  83.                     LPane(LStream *inStream);
  84.     
  85.     virtual            ~LPane();
  86.  
  87.     virtual void    FinishCreate();
  88.     PaneIDT            GetPaneID() const;
  89.     void            SetPaneID(PaneIDT inPaneID);
  90.     virtual LPane*    FindPaneByID(PaneIDT inPaneID);
  91.     
  92.     static LView*    GetDefaultView();
  93.     static void        SetDefaultView(LView *inView);
  94.     
  95.     virtual GrafPtr    GetMacPort() const;
  96.     
  97.     virtual Int32    GetValue() const;
  98.     virtual void    SetValue(Int32 inValue);
  99.     
  100.     virtual StringPtr    GetDescriptor(Str255 outDescriptor) const;
  101.     virtual void        SetDescriptor(ConstStr255Param inDescriptor);
  102.     
  103.     virtual Int32    GetRefCon() const;
  104.     virtual void    SetRefCon(Int32 inRefCon);
  105.     
  106.         // • Frame Management
  107.     
  108.     void            GetFrameSize(SDimension16 &outSize) const;
  109.     void            GetFrameLocation(SPoint32 &outLocation) const;
  110.     
  111.     void            SetFrameBinding(const SBooleanRect &inFrameBinding);
  112.     
  113.     virtual Boolean    CalcPortFrameRect(Rect& outRect) const;
  114.     virtual Boolean    CalcLocalFrameRect(Rect& outRect) const;
  115.     
  116.     void            ResizeFrameTo(Int16 inWidth, Int16 inHeight,
  117.                                     Boolean inRefresh);
  118.     virtual void    ResizeFrameBy(Int16 inWidthDelta, Int16 inHeightDelta,
  119.                                     Boolean inRefresh);
  120.     
  121.     virtual void    MoveBy(Int32 inHorizDelta, Int32 inVertDelta,
  122.                                     Boolean inRefresh);
  123.     
  124.     void            PlaceInSuperFrameAt(Int32 inHorizOffset,
  125.                                     Int32 inVertOffset, Boolean inRefresh);
  126.     virtual void    PlaceInSuperImageAt(Int32 inHorizOffset,
  127.                                     Int32 inVertOffset, Boolean inRefresh);
  128.                                     
  129.     virtual void    SavePlace(LStream *outPlace);
  130.     virtual void    RestorePlace(LStream *inPlace);
  131.     
  132.     void            PutInside(LView *inView);
  133.     LView*            GetSuperView();
  134.     
  135.         // • Adapting to changes in SuperView
  136.  
  137.     virtual void    AdaptToNewSurroundings();
  138.     virtual void    AdaptToSuperFrameSize(Int32 inSurrWidthDelta,
  139.                                     Int32 inSurrHeightDelta,
  140.                                     Boolean inRefresh);
  141.     virtual void    AdaptToSuperScroll(Int32 inHorizScroll,
  142.                                     Int32 inVertScroll);
  143.     
  144.         // • Mousing
  145.  
  146.     virtual Boolean    PointIsInFrame(Int32 inHorizPort, Int32 inVertPort) const;
  147.     virtual Boolean    IsHitBy(Int32 inHorizPort, Int32 inVertPort);
  148.     virtual LPane*    FindSubPaneHitBy(Int32 inHorizPort, Int32 inVertPort);
  149.     virtual void    Click(SMouseDownEvent &inMouseDown);
  150.     virtual void    EventMouseUp(const EventRecord &inMacEvent);
  151.     virtual void    UpdateClickCount(const SMouseDownEvent &inMouseDown);
  152.     virtual void    AdjustCursor(Point inPortPt,
  153.                                     const EventRecord &inMacEvent);
  154.     
  155.     virtual Boolean    PointsAreClose(Point inFirstPt, Point inSecondPt);    
  156.     virtual Boolean    ClickTimesAreClose(Uint32 inLastClickTime);                        
  157.     static LPane*    GetLastPaneClicked();
  158.     
  159.         // • Showing
  160.     
  161.     Boolean            IsVisible() const;
  162.     virtual void    Show();
  163.     virtual void    Hide();
  164.     
  165.         // • Activating
  166.     
  167.     Boolean            IsActive() const;
  168.     virtual void    Activate();
  169.     virtual void    Deactivate();
  170.     
  171.         // • Enabling
  172.     
  173.     Boolean            IsEnabled() const;
  174.     virtual void    Enable();
  175.     virtual void    Disable();
  176.     
  177.         // • Drawing
  178.     
  179.     virtual void    LockDrawing();
  180.     virtual void    UnlockDrawing();
  181.     virtual void    Refresh();
  182.     virtual void    InvalPortRect(const Rect *inRect);
  183.     virtual void    InvalPortRgn(RgnHandle inRgnH);
  184.     virtual void    ValidPortRect(const Rect *inRect);
  185.     virtual void    ValidPortRgn(RgnHandle inRgnH);
  186.     virtual RgnHandle    GetLocalUpdateRgn();
  187.     
  188.     virtual void    UpdatePort();
  189.     virtual Boolean    FocusDraw();
  190.     virtual void    Draw(RgnHandle inSuperDrawRgnH);
  191.     
  192.         // • Printing
  193.         
  194.     virtual void    CountPanels(Uint32 &outHorizPanels,
  195.                                     Uint32 &outVertPanels);
  196.     virtual void    PrintPanel(const PanelSpec &inPanel,
  197.                                     RgnHandle inSuperPrintRgnH);
  198.     virtual void    SuperPrintPanel(const PanelSpec &inSuperPanel,
  199.                                     RgnHandle inSuperPrintRgnH);
  200.     virtual void    PrintPanelSelf(const PanelSpec &inPanel);
  201.     
  202.         // • Coordinate Transformations
  203.     
  204.     virtual void    PortToLocalPoint(Point &ioPoint) const;
  205.     virtual void    LocalToPortPoint(Point &ioPoint) const;
  206.     
  207.     virtual void    GlobalToPortPoint(Point &ioPoint) const;
  208.     virtual void    PortToGlobalPoint(Point &ioPoint) const;
  209.     
  210.     static Boolean    IsAreaInQDSpace(Int32 inLeft, Int32 inTop,
  211.                                     Int16 inWidth, Int16 inHeight);
  212.                                     
  213.     static Int16    GetClickCount();
  214.                                     
  215. protected:
  216.     static LView    *sDefaultView;
  217.     static LPane    *sLastPaneClicked;
  218.     static Uint32    sWhenLastMouseUp;
  219.     static Uint32    sWhenLastMouseDown;
  220.     static Point    sWhereLastMouseDown;
  221.     static Int16    sClickCount;
  222.     
  223.     virtual void    FinishCreateSelf();
  224.     virtual void    ClickSelf(const SMouseDownEvent &inMouseDown);
  225.     virtual void    AdjustCursorSelf(Point inPortPt,
  226.                                     const EventRecord &inMacEvent);
  227.     
  228.     virtual void    DrawSelf();    
  229.     
  230.     virtual void    ShowSelf();
  231.     virtual void    SuperShow();
  232.     virtual void    HideSelf();
  233.     virtual void    SuperHide();
  234.     
  235.     virtual void    ActivateSelf();
  236.     virtual void    SuperActivate();
  237.     virtual void    DeactivateSelf();
  238.     virtual void    SuperDeactivate();
  239.  
  240.     virtual void    EnableSelf();
  241.     virtual void    SuperEnable();
  242.     virtual void    DisableSelf();
  243.     virtual void    SuperDisable();
  244.     
  245. private:
  246.     PaneIDT            mPaneID;
  247.     Int16            mLockLevel;
  248.     SDimension16    mFrameSize;
  249.     SPoint32        mFrameLocation;
  250.     SBooleanRect    mFrameBinding;
  251.     Int32            mRefCon;
  252.     LView            *mSuperView;
  253.     
  254. protected:        // +++ These will become private, so don't access
  255.                 //    them from subclasses
  256.     ETriState        mVisible;
  257.     ETriState        mActive;
  258.     ETriState        mEnabled;
  259. };